#source the api keys from Parameter file
source("fred_parameters.R")
#set up API connection with fredr package
fredr_set_key(api.key.fred)
tsy_tips_tickers
## [1] "DGS1MO,DGS3MO,DGS6MO,DGS1,DGS2,DGS3,DGS5,DGS7,DGS10,DGS20,DGS30,DFII5,DFII7,DFII10,DFII20,DFII30"
#Get the list to tickers from param file.
tickers <- str_split(tsy_tips_tickers,",", simplify = TRUE)
tickers
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
## [1,] "DGS1MO" "DGS3MO" "DGS6MO" "DGS1" "DGS2" "DGS3" "DGS5" "DGS7" "DGS10"
## [,10] [,11] [,12] [,13] [,14] [,15] [,16]
## [1,] "DGS20" "DGS30" "DFII5" "DFII7" "DFII10" "DFII20" "DFII30"
for (t in tickers){
print(t)
}
## [1] "DGS1MO"
## [1] "DGS3MO"
## [1] "DGS6MO"
## [1] "DGS1"
## [1] "DGS2"
## [1] "DGS3"
## [1] "DGS5"
## [1] "DGS7"
## [1] "DGS10"
## [1] "DGS20"
## [1] "DGS30"
## [1] "DFII5"
## [1] "DFII7"
## [1] "DFII10"
## [1] "DFII20"
## [1] "DFII30"
#library(readxl)
#DGS1MO.data <- read_excel("DGS1MO.xls")
#head(DGS1MO.data)
#str(DGS1MO.data)
#DGS1MO.data$date = as.Date(DGS1MO.data$date)
#str(DGS1MO.data)
#Functions to plot different types of TS plots
#function to plot simple moving average
plot_savg_ts <- function(df, fredtkr, ttl)
{
#title <- paste(fredtkr, " & Simple Moving Avg")
#title
plot_smvg <- df %>%
ggplot(aes( x = date)) +
geom_line(aes(y = value, color = "value"), linetype = "solid", size = 0.5) +
geom_line(aes(y = smavg14, color = "smavg14"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = smavg21, color = "smavg21"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = smavg63, color = "smavg63"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = smavg125, color = "smavg125"),linetype = "dashed", size = 0.5) +
geom_line(aes(y = smavg252, color = "smavg252"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = smavg756, color = "smavg756"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = smavg1260, color = "smavg1260"), linetype = "dashed", size = 0.5) +
ggtitle(ttl) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(color = "Legend") +
xlab("Date") + ylab("Time Series data") +
scale_colour_manual("",
breaks = c("value", "smavg14", "smavg21", "smavg63", "smavg125", "smavg252", "smavg756", "smavg1260"),
values = c("red", "green", "blue", "orange", "purple", "grey", "yellow", "black"))
return(plot_smvg)
}
#function to plot exponential moving average
plot_eavg_ts <- function(df, fredtkr, ttl)
{
#title <- paste(fredtkr, " & Simple Moving Avg")
#title
plot_emvg <- df %>%
ggplot(aes( x = date)) +
geom_line(aes(y = value, color = "value"), linetype = "solid", size = 0.5) +
geom_line(aes(y = emavg14, color = "emavg14"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = emavg21, color = "emavg21"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = emavg63, color = "emavg63"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = emavg125, color = "emavg125"),linetype = "dashed", size = 0.5) +
geom_line(aes(y = emavg252, color = "emavg252"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = emavg756, color = "emavg756"), linetype = "dashed", size = 0.5) +
geom_line(aes(y = emavg1260, color = "emavg1260"), linetype = "dashed", size = 0.5) +
ggtitle(ttl) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(color = "Legend") +
xlab("Date") + ylab("Time Series data") +
scale_colour_manual("",
breaks = c("value", "emavg14", "emavg21", "emavg63", "emavg125", "emavg252", "emavg756", "emavg1260"),
values = c("red", "green", "blue", "orange", "purple", "grey", "yellow", "black"))
return(plot_emvg)
}
#function to plot moving SD
plot_msd_ts <- function(df, fredtkr, ttl)
{
#title <- paste(fredtkr, " & Simple Moving Avg")
#title
plot_msd <- df %>%
ggplot(aes( x = date)) +
geom_line(aes(y = as.numeric(value), color = "value"), linetype = "solid", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(msd63), color = "msd63"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(msd125), color = "msd125"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(msd252), color = "msd252"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(msd756), color = "msd756"),linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(msd1260), color = "msd1260"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
ggtitle(ttl) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(color = "Legend") +
xlab("Date") + ylab("Time Series data") +
scale_colour_manual("",
breaks = c("value", "msd63", "msd125", "msd252", "msd756", "msd1260"),
values = c("red", "green", "blue", "orange", "purple", "grey"))
return(plot_msd)
}
#function to plot moving zscore
plot_zscore_ts <- function(df, fredtkr, ttl)
{
plot_zscore <- df %>%
ggplot(aes( x = date)) +
geom_line(aes(y = as.numeric(value), color = "value"), linetype = "solid", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mzscore63), color = "mzscore63"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mzscore125), color = "mzscore125"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mzscore252), color = "mzscore252"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mzscore756), color = "mzscore756"),linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mzscore1260), color = "mzscore1260"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
ggtitle(ttl) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(color = "Legend") +
xlab("Date") + ylab("Time Series data") +
scale_colour_manual("",
breaks = c("value", "mzscore63", "mzscore125", "mzscore252", "mzscore756", "mzscore1260"),
values = c("red", "green", "blue", "orange", "purple", "grey"))
return(plot_zscore)
}
#function to plot moving hi
plot_mhi_ts <- function(df, fredtkr, ttl)
{
plot_mhi <- df %>%
ggplot(aes( x = date)) +
geom_line(aes(y = as.numeric(value), color = "value"), linetype = "solid", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mhi63), color = "mhi63"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mhi125), color = "mhi125"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mhi252), color = "mhi252"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mhi756), color = "mhi756"),linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mhi1260), color = "mhi1260"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
ggtitle(ttl) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(color = "Legend") +
xlab("Date") + ylab("Time Series data") +
scale_colour_manual("",
breaks = c("value", "mhi63", "mhi125", "mhi252", "mhi756", "mhi1260"),
values = c("red", "green", "blue", "orange", "purple", "grey"))
return(plot_mhi)
}
#function to plot moving low
plot_mlow_ts <- function(df, fredtkr, ttl)
{
plot_mlow <- df %>%
ggplot(aes( x = date)) +
geom_line(aes(y = as.numeric(value), color = "value"), linetype = "solid", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mlow63), color = "mlow63"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mlow125), color = "mlow125"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mlow252), color = "mlow252"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mlow756), color = "mlow756"),linetype = "dashed", size = 0.5, na.rm = TRUE) +
geom_line(aes(y = as.numeric(mlow1260), color = "mlow1260"), linetype = "dashed", size = 0.5, na.rm = TRUE) +
ggtitle(ttl) +
theme(plot.title = element_text(hjust = 0.5)) +
labs(color = "Legend") +
xlab("Date") + ylab("Time Series data") +
scale_colour_manual("",
breaks = c("value", "mlow63", "mlow125", "mlow252", "mlow756", "mlow1260"),
values = c("red", "green", "blue", "orange", "purple", "grey"))
return(plot_mlow)
}
#Look through all tickers read from the parameter file and then read the respective data file abd plot diffent types of TS plots. This is for TS for which moving averages , exponential moving averages, moving hi, moving low, moving sd, moving zscore are there in respective data files, downloade and calculated before. This expects the data file names as <ticker>.xls and the data file columns names as used below in the functions. These column names generated dynamically while dowloding the data from fred and calculating these derived data.
for (tkr in tickers)
{
#library(tidyverse)
#tkr <- 'DFII30'
#dfname = read_excel(paste(tkr,".xls", sep = ""))
#tkr <- 'DGS1MO'
dfname = read_excel(paste(tkr,".xls", sep = ""), .name_repair = "minimal")
dfname <- dfname[,-1]
#plotting mavg
plt_smavg <- plot_savg_ts(dfname, paste(tkr), paste(tkr, " & Moving average", sep = ""))
print(plt_smavg)
if(!(min(year(dfname$date)) > 2009) ){ # check for the data available for this range then only plot
plt_smavg_f1 <- plot_savg_ts(dfname %>% filter((year(date) >= 2007) & (year(date) <= 2009)), paste(tkr), paste(tkr, " & Moving average for Year between 2007 & 2009", sep = ""))
print(plt_smavg_f1)
}
plt_smavg_f2 <- plot_savg_ts(dfname %>% filter((year(date) >= 2019)), paste(tkr), paste(tkr, " & Moving average for Year >= 2019", sep = ""))
print(plt_smavg_f2)
#plotting eavg
plt_emavg <- plot_eavg_ts(dfname, paste(tkr), paste(tkr, " & Exp. Moving average", sep = ""))
print(plt_emavg)
if(!(min(year(dfname$date)) > 2009) ){ # check for the data available for this range then only plot
plt_emavg_f1 <- plot_eavg_ts(dfname %>% filter((year(date) >= 2007) & (year(date) <= 2009)), paste(tkr), paste(tkr, " & Exp. Moving average for Year between 2007 & 2009", sep = ""))
print(plt_emavg_f1)
}
plt_emavg_f2 <- plot_eavg_ts(dfname %>% filter((year(date) >= 2019)), paste(tkr), paste(tkr, " & Exp. Moving average for Year >= 2019", sep = ""))
print(plt_emavg_f2)
#plotting msd
plt_msd <- plot_msd_ts(dfname, paste(tkr), paste(tkr, " & Moving SD", sep = ""))
print(plt_msd)
if(!(min(year(dfname$date)) > 2009) ){ # check for the data available for this range then only plot
plt_msd_f1 <- plot_msd_ts(dfname %>% filter((year(date) >= 2007) & (year(date) <= 2009)), paste(tkr), paste(tkr, " & Moving SD for Year between 2007 & 2009", sep = ""))
print(plt_msd_f1)
}
plt_msd_f2 <- plot_msd_ts(dfname %>% filter((year(date) >= 2019)), paste(tkr), paste(tkr, " & Moving SD for Year >= 2019", sep = ""))
print(plt_msd_f2)
#plotting zscore
plt_zscore <- plot_zscore_ts(dfname, paste(tkr), paste(tkr, " & Moving Zscore", sep = ""))
print(plt_zscore)
if(!(min(year(dfname$date)) > 2009) ){ # check for the data available for this range then only plot
plt_zscore_f1 <- plot_zscore_ts(dfname %>% filter((year(date) >= 2007) & (year(date) <= 2009)), paste(tkr), paste(tkr, " & Moving Zscore for Year between 2007 & 2009", sep = ""))
print(plt_zscore_f1)
}
plt_zscore_f2 <- plot_zscore_ts(dfname %>% filter((year(date) >= 2019)), paste(tkr), paste(tkr, " & Moving Zscore for Year >= 2019", sep = ""))
print(plt_zscore_f2)
#plotting mhi
plt_mhi <- plot_mhi_ts(dfname, paste(tkr), paste(tkr, " & Moving Hi", sep = ""))
print(plt_mhi)
if(!(min(year(dfname$date)) > 2009) ){ # check for the data available for this range then only plot
plt_mhi_f1 <- plot_mhi_ts(dfname %>% filter((year(date) >= 2007) & (year(date) <= 2009)), paste(tkr), paste(tkr, " & Moving Hi for Year between 2007 & 2009",sep = ""))
print(plt_mhi_f1)
}
plt_mhi_f2 <- plot_mhi_ts(dfname %>% filter((year(date) >= 2019)), paste(tkr), paste(tkr, " & Moving Hi for Year >= 2019", sep = ""))
print(plt_mhi_f2)
#plotting mlow
plt_mlow <- plot_mlow_ts(dfname, paste(tkr), paste(tkr, " & Moving Low", sep = ""))
print(plt_mlow)
if(!(min(year(dfname$date)) > 2009) ){ # check for the data available for this range then only plot
plt_mlow_f1 <- plot_mlow_ts(dfname %>% filter((year(date) >= 2007) & (year(date) <= 2009)), paste(tkr), paste(tkr, " & Moving Low for Year between 2007 & 2009", sep = ""))
print(plt_mlow_f1)
}
plt_mlow_f2 <- plot_mlow_ts(dfname %>% filter((year(date) >= 2019)), paste(tkr), paste(tkr, " & Moving Low for Year >= 2019", sep = ""))
print(plt_mlow_f2)
}

























































































































































































































































































